package com.specter.sure.core;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

import lombok.Data;

/**
 * Note:读取资源配置文件
 * 
 * @author Liang.Wang
 * @version May 2, 2017
 */
@Data
@Component
@ConfigurationProperties(prefix = "specter")
public class AuthConfig {
	/** 登录前地址 */
	@Value("${specter.sure.authorize.url.login:/login.html}")
	public String AUTHORIZE_URL_LOGIN;
	/** 认证成功跳转 */
	@Value("${specter.sure.authorize.url.success:/index.html}")
	public String AUTHORIZE_URL_SUCCESS;
	/** 认证失败跳转 */
	@Value("${specter.sure.authorize.url.failure:/login.html}")
	public String AUTHORIZE_URL_FAILURE;
	/** 登出后地址 */
	@Value("${specter.sure.authorize.url.logout:/login.html}")
	public String AUTHORIZE_URL_LOGOUT;
	/** 是否记住地址 */
	@Value("${specter.sure.authorize.url.remember:false}")
	public boolean AUTHORIZE_URL_REMEMBER;
	/** 认证不控制地址，逗号(,)分隔 */
	@Value("${specter.sure.authorize.url.uncontrol:/index.html}")
	public String[] AUTHORIZE_URL_UNCONTROL;
	/** 用户参数名 */
	@Value("${specter.sure.authorize.username.key:specter_security_params_loginid}")
	public String AUTHORIZE_USERNAME_KEY;
	/** 密码参数名 */
	@Value("${specter.sure.authorize.password.key:specter_security_params_password}")
	public String AUTHORIZE_PASSWORD_KEY;
	/** 密码加密方式 */
	@Value("${specter.sure.authorize.password.encoder:md5_salt}")
	public String AUTHORIZE_PASSWORD_ENCODER;
	/** 验证码名 */
	@Value("${specter.sure.authorize.captcha.key:specter_security_params_captcha}")
	public String AUTHORIZE_CAPTCHA_KEY;
	/** 是否有验证码 */
	@Value("${specter.sure.authorize.captcha.validate:true}")
	public boolean AUTHORIZE_CAPTCHA_VALIDATE;

	/** 安全级别 */
	@Value("${specter.sure.privilege.level:MIDDLE}")
	public String PRIVILEGE_LEVEL;
	/** 过滤参数 */
	@Value("${specter.sure.privilege.parameters:method,action}")
	public String PRIVILEGE_PARAMETERS;
	/** 授权失败地址 */
	@Value("${specter.sure.privilege.url.failure:/403.html}")
	public String PRIVILEGE_URL_FAILURE;
	/** 授权不控制地址，逗号(,)分隔 */
	@Value("${specter.sure.privilege.url.uncontrol:/403.html}")
	public String[] PRIVILEGE_URL_UNCONTROL;

	/** 是否启用单点登录，SERVER不用启用 */
	@Value("${specter.sure.sso.enable:false}")
	public boolean SSO_ENABLE;
	/** 认证服务器地址 */
	@Value("${specter.sure.sso.server:/sure/sauth/authorize}")
	public String SSO_SERVER;
	/** 认证服务器地址 */
	@Value("${specter.sure.sso.callback:/sure/sauth/callback}")
	public String SSO_CALLBACK;
	/** 共享登录信息时候，是否同步 登录/退出 */
	@Value("${specter.sure.sso.sync:false}")
	public boolean SSO_SYNC;

	/** token加密秘钥 默认MD5(liangthink.cn) */
	@Value("${specter.sure.storage.token.secret:341aab91082208f133b21908b0f41803}")
	public String STORAGE_TOKEN_SECRET;
	/** token过期时长(秒) 默认2小时 */
	@Value("${specter.sure.storage.token.expire:7200}")
	public int STORAGE_TOKEN_EXPIRE;
	/** session过期时长(秒) 默认4小时 */
	@Value("${specter.sure.storage.session.expire:14400}")
	public int STORAGE_SESSION_EXPIRE;
	/** cookies过期时长(秒) 默认120小时 */
	@Value("${specter.sure.storage.cookies.expire:432000}")
	public int STORAGE_COOKIES_EXPIRE;

}
